As high-resolution (e.g., high definition (HD)) displays become common, image/video upsampling has been used with such displays. For example, image/video upsampling may be used to convert lower-resolution (e.g., standard definition (SD)) images/video to higher resolution (e.g., HD) images/video. Typically, upsampling may be performed via interpolation. For example, given an original image of 100×100 pixel resolution, generating an upsampled image that has a resolution of 200×200 may include “spreading out” the 100×100 original pixels and determining interpolated values for “gap” pixels in the upsampled image.
In interpolation, a model used to describe the relationship between high-resolution pixels and low-resolution pixels may affect the performance of the interpolation. Typically, an interpolation algorithm determines the value of a pixel in the higher resolution image as a weighted average of the values in the neighborhood of the pixel in the lower resolution image. The weighted average scheme enables formulation of the interpolation algorithm using linear convolution techniques. However, such linear interpolation schemes that are based on space-invariant models may fail to capture the changing statistics around edges and may consequently produce interpolated images with blurred edges and annoying artifacts. Despite these drawbacks, linear interpolation remains popular due to its computational simplicity.
Blurring in the upsampled image may be removed via iterative feedback-controlled de-blurring. However, this type of de-blurring may be slow due to repeated application of a de-blurring operator and may therefore be unsuitable for real-time video upsampling.